package top.rainf.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import top.rainf.constants.AttributeConstants;
import top.rainf.service.impl.RegisterService;
import top.rainf.support.Result;
import top.rainf.util.StringUtil;
import top.rainf.domain.vo.UserBaseInfo;

/**
 * @author 星环
 * @date 2023/5/6 13:50:13
 * @description 注册相关流程控制类
 */

@RestController
@RequestMapping("/regis")
public class RegisterController {
    @Autowired
    RegisterService registerService;

    /**
     * 看看注册填的用户名存在不
     *
     * @param username 要检查的用户名
     * @return 无，用户名是否存在
     */
    @RequestMapping("/username-unique")
    public Result usernameUnique(String username){
        boolean exist = registerService.checkUsernameUnique(username);
        return Result.success("unique",exist);
    }

    /**
     * 注册用户，格式应该在前端校验，后端就不做啦
     * @param user 用户注册信息
     * @param verifyCode 用户输入的验证码
     * @param realCode 真正的验证码，然而早已存入了session<strike>然而沼跃鱼早已看穿了一切</strike>
     * @return
     */
    @RequestMapping("/register")
    public Result register(UserBaseInfo user, @RequestParam("verify_code") String verifyCode,
                           @SessionAttribute(AttributeConstants.REAL_CODE) String realVerifyCode){
        /*
         * 前端发送ajax请求注册，验证 用户名和验证码，注册信息，返回注册结果。
         * 前端根据返回信息跳转页面
         * 前端发送ajax校验验证码请求------等待结果----根据结果跳转
         * ---成功：跳转至登录页面。
         * ---失败：提示，并且不移动。
         * 后端收到ajax请求---验证返回信息
         */
        System.out.println(user);
        System.out.println(verifyCode);
        System.out.println(realVerifyCode);
        //return Result.success();
        String msg = registerService.register(user, verifyCode, realVerifyCode);
        return StringUtil.isNullOrEmpty(msg) ? Result.success("注册成功！") : Result.fail(msg);
    }
}
